****************************************************************************************************************************

Date: 17 SEP 2014

Purpose: Add divorce variable

****************************************************************************************************************************;

**************************************************************
*Indhenter min fulde sample

**************************************************************;

libname in1 'K:\Data\Workdata\702727\xru\NICU project\Datasæt';

data nicu_data;
set in1.nicu_outcomes;
proc sort;
by pnrm;
run;

data nicu_data1;
set nicu_data (keep= pnr pnrm pnrf birthyear);

if birthyear<1980 then delete;
run;

proc freq data=nicu_data1;
table birthyear;
run;


***********************************************************
Må tilføje skilmisse indikatorer for det enkelte barn
- Opdele nicu i mors forskellie børn
- tilføje skilsmisse 1-10år efter det enkelte barns fødsel
************************************************************;

*Opdeler sample i moderens børn;
proc sort data=nicu_data1;
by pnrm birthyear;
run;

data nicu_data1;
set nicu_data1;

d1=1;

by pnrm;
if first.pnrm then d2=d1;
else d2+d1;
run;

proc freq data=nicu_data1;
table d2;
run;


*Opdeler sample i moderens børn; 


%macro born(start,slut);
%do i=&start %to &slut;

data barn&i;
set nicu_data1;
if d2=&i;
run;

%end;
%mend;
%born(1,8);


***************************************
Indlæser civilstatusdata
***************************************;

libname raw1 'F:\Rawdata\702727\data200809';
libname raw2 'F:\Rawdata\702727';
libname raw3 'F:\Rawdata\702727\data201204';

*Laver en makro;

%macro samlever(start,slut);
%do i=&start %to &slut;

data samlever&i;
set raw1.cfamdata&i(drop = cnr ctype);

year=&i;
run;
%end; 
%mend;
%samlever(1980,2006);
run;


data samlever2007;
set raw1.efamdata2007(drop=familie_id rename=(efalle=cfalle )); 
year=2007;
run;

data samlever2008;
set raw2.efamdata2008(drop=familie_id rename=(efalle=cfalle )); 
year=2008;
run;

data samlever2009;
set raw3.efamdata2009(drop=familie_id rename=(efalle=cfalle )); 
year=2009;

*ændre to variable fra numerisk til char, så ens over tid;
temp_plads=put(plads, 1.);
drop plads;
rename temp_plads=plads;

temp_type=put(familie_type, 2.);
drop familie_type;
rename temp_type=familie_type;
run;

data samlever2010;
set raw3.efamdata2010(drop=familie_id rename=(efalle=cfalle )); 
year=2010;

*ændre to variable fra numerisk til char, så ens over tid;
temp_plads=put(plads, 1.);
drop plads;
rename temp_plads=plads;

temp_type=put(familie_type, 2.);
drop familie_type;
rename temp_type=familie_type;
run;


data temp_samlever;
set
samlever1980 samlever1981 samlever1982 samlever1983 samlever1984 samlever1985 samlever1986 samlever1987 samlever1988 samlever1989 
samlever1990 samlever1991 samlever1992 samlever1993 samlever1994; 
run;

data samlever; 
set temp_samlever
samlever1995 samlever1996 samlever1997 samlever1998 samlever1999 samlever2000 samlever2001
samlever2002 samlever2003 samlever2004 samlever2005 samlever2006 samlever2007 samlever2008 samlever2009 samlever2010;
proc sort;
by pnr year;
run;

proc freq data=samlever;
table year;
run;

proc datasets;
delete samlever1980-samlever2010;
quit; 



/*Tilpasser så det er mors civilstatus*/
data samlever_mor;
set samlever (drop=ANTB00 ANTB01 ANTB02 ANTB03 ANTB04 ANTB05 ANTB06 ANTB07 ANTB08 
ANTB09 ANTB10 ANTB11 ANTB12 ANTB13 ANTB14 ANTB15 ANTB16 ANTB17 plads);

if familie_type=1 then cstatus=2;		/*Fam_type=1: ægtepar, Cstatus=2/3: giftkvinde/gift mand*/
if familie_type=2 then cstatus=4;		/*Fam_type=2: reg partnerskab, Cstatus=4/5: reg partnerskab ´ældst/yngst*/
if familie_type=3 then cstatus=6;		/*Fam_type=3: samlevendepar (min et fælles barn), Cstatus=6: samlevende par*/
if familie_type=4 then cstatus=7;		/*Fam_type=4: samboendepar (hvert sit køn, ikke fælles børn), Cstatus=7: samboende par*/
if familie_type=5 then cstatus=1;		/*Fam_type=5: enlig, Cstatus=1: enlig*/

rename pnr=pnrm;
rename cfalle=mor_partner;
rename CSTATUS=mor_cstatus;

run;




***************************************************************************
Merger nu civilstatusdata på hver enkel sample med hvert enkelt barn.

- På en måde kan jeg få et mål for divorce 1-10 år efter for hvert enkelt barn.
	Uanset birthorder mm. 

****************************************************************;

%macro barn(start,slut);
%do i=&start %to &slut;

**********************
*Merger med hoveddata
**********************;
 
data samlever_mor_barn&i;
merge barn&i (in=a) samlever_mor (drop=familie_type);
by pnrm;
if a;
run;


***************************************************************************************

Danner en indikator for om mor skifter partner/bliver skilt.
Dette skal være betinget på at den forgående status var samlevende par eller ægteskab

***************************************************************************************;

proc sort data=samlever_mor_barn&i;
by pnrm year;
run;

*Kun interesseret i brud efter barnet er undfanget! - dropper derfor obs der ligger før dette;
data samlever_mor_barn1_&i;
set samlever_mor_barn&i;

if year >= birthyear-1 then output samlever_mor_barn1_&i;
run;



*Laver en dummy, der er registrerer om forældrene går fra hinanden;

data skilt_mor_barn&i;
set samlever_mor_barn1_&i;

if lag1(mor_partner)^=mor_partner and lag1(pnrm)=pnrm and lag1(mor_cstatus) in("2", "3", "6") then temp_skilt=1;

run;


proc sort data=skilt_mor_barn&i;
by pnrm descending temp_skilt;
run;

data skilt_mor_barn&i;
set skilt_mor_barn&i;
by pnrm;
if first.pnrm then temp2_skilt=temp_skilt;
else temp2_skilt + temp_skilt;
run;

data skilt_mor_barn&i;
set skilt_mor_barn&i;

divorced_parents=0;
if temp2_skilt>0 then divorced_parents=1;
run;

data skilt_mor_barn1_&i;
set skilt_mor_barn&i (drop=temp2_skilt);
proc sort;
by pnrm year;
run;


*Laver en variabel der registrerer, hvilket år de bliver skilt;

proc sort data=skilt_mor_barn1_&i;
by pnrm descending temp_skilt year;
run;

data skilt_mor_barn1_&i;
set skilt_mor_barn1_&i;
by pnrm;
if first.pnrm and temp_skilt=1 then temp_skilt_aar=year;
run;

data skilt_mor_barn1_&i;
set skilt_mor_barn1_&i;
by pnrm;
if first.pnrm then skilt_aar=temp_skilt_aar;
else skilt_aar + temp_skilt_aar;
run;


*Laver en dummy der er lig 1 fra og med det år forældrene bliver skilt;

proc sort data=skilt_mor_barn1_&i;
by pnrm year;
run;

data skilt_mor_barn1_&i;
set skilt_mor_barn1_&i;

by pnrm;
if first.pnrm then skilt1=temp_skilt;
else skilt1+temp_skilt;
run;


data skilt_mor_barn1_&i;
set skilt_mor_barn1_&i;
if skilt1^="." then temp_divorced=1;
if skilt1="." then temp_divorced=0; *lig 0, hvis de er gift eller samboende;
run;


*Divorce-dummy, to indicate whether parents are together x years after first birth;


*Laver makro for at skabe variablen for år 0 til 10;
data skilt_barn1_&i;
set skilt_mor_barn1_&i;

%macro time(start,slut);
%do j=&start %to &slut;

if birthyear+&j=year then divorce_year&j=temp_divorced;
%end; 
%mend;
%time(0,10);
run;



***************************
Kollapser data
***************************;

proc means data=skilt_barn1_&i NWAY NOPRINT;
class pnrm;
Output Out=temp_divorced_barn&i min=;
run;

*Gemmer kun de variable jeg skal bruge videre;
data divorced_barn&i;
set temp_divorced_barn&i (drop=_TYPE_ _FREQ_ year temp_skilt temp_skilt_aar skilt1 temp_divorced);

%macro time2(start,slut);
%do h=&start %to &slut;

if divorce_year&h=. then divorce_year&h=0;

%end; 
%mend;
%time2(0,10);
run;



%end; 
%mend;
%barn(1,8);
run;






**************************************
Samler divorce data for moderens børn
**************************************;
%macro divorce(start,slut);
%do k=&start %to &slut;

data divorced&k;
set divorced_barn&k (keep=pnrm divorce_year0 divorce_year1 divorce_year2 divorce_year3 divorce_year4 divorce_year5 divorce_year6 divorce_year7 divorce_year8 divorce_year9 divorce_year10);

proc sort;
by pnrm;
run;

proc sort data=barn&k (keep=pnr pnrm);
by pnrm;
run;


data divorced_child&k;
merge barn&k (in=a) divorced&k;
by pnrm;
run;


%end; 
%mend;
%divorce(1,8);

run;


data divorced;
set divorced_child1-divorced_child8 ;
run;

proc sort data=divorced;
by pnr;
run;

**************************************************************************
Hvis mor én gang er skilt, vil hun stå som skilt de efterfølgende år også
**************************************************************************;

data divorced_a;
set divorced;

if divorce_year0=1 then divorce_year1=1;

if divorce_year1=1 then divorce_year2=1;

if divorce_year2=1 then divorce_year3=1;

if divorce_year3=1 then divorce_year4=1;

if divorce_year4=1 then divorce_year5=1;

if divorce_year5=1 then divorce_year6=1;

if divorce_year6=1 then divorce_year7=1;

if divorce_year7=1 then divorce_year8=1;

if divorce_year8=1 then divorce_year9=1;

if divorce_year9=1 then divorce_year10=1;
run;


*******************************************
Kan nu merge dette på mit fulde datasæt
*******************************************;

proc sort data= nicu_data (drop= divorce10y divorce5y);
by pnr;
run;

data sample_divorce;
merge nicu_data (in=a) divorced_a;
by pnr;
if a;
run;


proc print data=sample_divorce (obs=500);
var pnr divorce:;
run;


proc freq data=sample_divorce;
table birthyear;
run;

proc means data=sample_divorce;
var divorce:;
run;



*Gemmer datasæt;


*STATA datasæt;
proc export data=sample_divorce outfile="K:\Data\Workdata\702727\xru\NICU project\September\Data\nicu_data_170914.dta" dbms=stata replace;
run;


libname out 'K:\Data\Workdata\702727\xru\NICU project\Datasæt';
data out.nicu_divorce;
set sample_divorce;
run;

proc means data=sample_divorce;
var crime: divorce:;
run;
